草庐IT

SQL ALTER TABLE 语句

全部标签

跨多行的MySQL条件语句

我有一个像这样的Profile表|--------|-----------||People|Favorite||--------|-----------||A|Movie||B|Movie||B|Jogging||--------|-----------|问:如何检索喜欢看电影不喜欢运行的人?在这个表中,结果只有人A。虽然我是这样出来的selectPeoplefromProfilewherePeoplein(selectPeoplefromProfilewherefavorite='Movie')andPeoplenotin(selectPeoplefromProfilewherefa

php - 半复杂的 PHP/MySQL Select 语句

我目前有3张table,供人们预订某些设备。这是我的表格:tblEquipment:idnamedescription1CameraTakespictures2ProjectorProjectspictures3LaptopPortableComputertblEvents:idstartendfirst_namelast_nameemail12009-08-102009-08-11JohnDoejd@email.com22009-08-152009-08-16JaneDoejd@email.comtblEventData:ideventIDequipmentID111212现在,用户

php - 返回由 mysqli_stmt_bind_param 创建的语句

我正在使用mysqli_stmt_bind_param()创建一个INSERT语句。出于某种原因,我收到一个错误。我使用mysqli_error()来查看错误消息,但它并不是特别有用。有没有办法只查看实际正在执行的查询?产生的错误:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'desc,date,expdate,mintix,maxtix,contactname,contactemail,contactphone)

php - 按 id 对结果进行分组的 MySQL SELECT 语句?

我正在尝试创建一个MySQLSELECT语句,该语句将从表中选择一堆行并将结果按行的ID分组(多行将具有相同的ID)。这是我尝试做的一个例子。假设我有下表:id|name1|Art1|Arnold1|Anatoly2|Beatrice2|Bertha2|Betty3|Constantine3|Cramer我想让MySQL像这样返回按id分组的数据:[1]=>Art,Arnold,Anatoly[2]=>Beatrice,Bertha,Betty[3]=>Constantine,Cramer我知道我可以做一个简单的SQL选择,然后在PHP中循环遍历结果,但如果可能的话,我想让MySQL处

带有 REPLACE 的更新语句中的 mysql 案例

我目前有这样的东西:UPDATEtable1SETcolumn1=REPLACE(column1,'abc','abc1')WHEREcolumn1LIKE'%abc%';UPDATEtable1SETcolumn1=REPLACE(column1,'def','def1')WHEREcolumn1LIKE'%def%';我正在尝试将这些合并到一个更新语句中并正在尝试以下操作:UPDATEtable1SETcolumn1=CASEWHENcolumn1LIKE'%abc%'THENREPLACE(column1,'abc','abc1')WHENcolumn1LIKE'%def%'TH

php - 尝试在使用 WHERE 语句时使用左连接从数据库中获取所有结果

我做了一些研究,我认为我正在寻找的东西与我通过搜索能够找到的东西有点相反。我目前正在尝试从一张表中提取一堆数据并将其与另一张表进行匹配。我正在使用左连接来完成此操作。我使用的代码是:SELECTpn.idFROMpnLEFTOUTERJOINpONpn.part_number=p.part_numberWHEREpn.programID='13'ANDpn.visible='1'ANDpn.type_id='11'AND(p.user_code='01045'ORp.user_codeISNULL)GROUPBYpn.part_numberORDERBYp.quantityDESCLI

PHP/MySQL Select From Order 语句无法正确处理结果

有人知道为什么这个查询不起作用吗?$result=mysql_query("SELECT*FROMEventsORDERBYIDASCLIMIT0,10");我希望数据向后排序,从最高值ID一直到1。但它不会那样做。它只是命令它们1,2,3,4,5非常感谢任何帮助。 最佳答案 当您想按DESC结束顺序排序时,您正在按ASC结束顺序排序。请尝试以下操作:$result=mysql_query("SELECT*FROMEventsORDERBYIDDESCLIMIT0,10");如果有机会,您想要10个具有最低ID的项目,但希望它们按降

mysql - 避免重新计算列列表中已计算的 WHERE 语句中的值

我真的很希望不必在我的WHERE语句中重新计算列列表中已经计算过的值。例如,我必须这样做:SELECTalbumId,fnAlbumGetNumberOfPhotos(album.albumId)ASalbumPhotoCountFROMalbumWHEREalbumIsActive=1ANDfnAlbumGetNumberOfPhotos(album.albumId)>0但想知道为什么我不能这样做,或者是否有任何其他不需要再次调用该函数的解决方法:SELECTalbumId,fnAlbumGetNumberOfPhotos(album.albumId)ASalbumPhotoCoun

php - mysql_query 到 PDO 和准备好的语句

我的CMS中有这个功能,它将字段和值的可变列表插入到两个不同的表中;一个是静态索引表,一个是动态的。这是函数:functioninsertFields($fields){$stdfields=array();$extfields=array();/*Separatethefieldsbasedonifthefieldsisstandardorextra.$this->fieldsisacsvlistofthedefinedextrafields*/foreach($fieldsas$field=>$value){$fields[mysql_real_escape_string($fie

MYSQL 触发器使用 case 语句设置日期时间值

我正在使用mysqlimport进行大量表插入(替换重复的主键)。多个表的日期时间列的记录包含值“0000-00-00”。我想要的是一个触发器,它检测这些“0000-00-00”值并替换为“1950-01-01”,否则将日期时间值保留在记录中(即当它不是“0000-00-00”时).我尝试了以下方法:CREATETRIGGERset_datetimeBEFOREINSERTONtblFOREACHROWCASEWHENdate_col='0000-00-00'THENSETdate_col='1950-01-01';ENDCASE谢谢。编辑更新尝试:CREATETRIGGERset_d